自作Preloaderの素晴らしい挙動


概要

作った時は全くそんなこと考えてなかったと思うんだけど結果的に素晴らしくなっていた。

覚え書きまでに。


Autoya Preloader

これ。

AssetBundlePreloader.cs

https://github.com/sassembla/Autoya/blob/master/Assets/Autoya/AssetBundle/AssetBundlePreloader.cs


実際にAssetを使用する前に、AssetBundle(AB)を名称指定でDLしておく、という機構なんだけど、

AB同士の依存解決についていい塩梅に怠惰だった。


そのため、最小のDL範囲で動く、ということを実現していたので内容について書いておく。



依存解決と展開

ABを作成する際に、依存関係は勝手に作成される。

AssetGraphとか使うと作成自体は楽。


で、「とりあえず該当するABだけを、使用可能な状態で保持する」というのを実現するにはどうすればいいか。

すごく単純で、そいつの依存だけをとりあえず解決すればいい。


もし次のような依存があるABがある場合、


a -> b -> c


aをDLする際、a, bまでは取得してしまっていい。

で、実際にaを使う際には、aとbだけがあれば用は足りる。


では、bを使おうとすると?

bのロード時にcに依存しているのが解決されるので、問題ない、という。


良かった良かった。


というわけで、たった1段だけの依存解決でPreloadの用は足りるんだなあというのを

いつかの自分の実装から把握するなどした。